אני בונה עכשיו סוג של פורום. עכשיו חשבתי שלכל הודעה בנושא מסוים אני אקשר ל VIEW.
הכוונה שלי שבמקום להתחיל לעשות את כל ה html באותו ה view, פשוט להריץ לולאה על כל ההודעות באותו הנושא ולכל הודעה לקשר view (שבו נמצא כל ה HTML של הצגת ההודעה) this->load->view.
האם זה נכון לעשות ככה? וזה לא יאט לי את המערכת? או שעדיף לעשות את כל ה HTML באותו ה VIEW ולא להתחיל לקשר views אחרים.
הנה קוד לדוגמא שיהיה לכם יותר קל להבין:
{
$this->load->view("post", array("post" => $post));
}
7 תשובות
למה אתה לא עושה ב view עצמו את התנאי של ה foreach ואז בעצם לשלוח אליו רק את ה posts ?
למה לא להשתמש בparser?
אתה יכול לעשות בקלות foreach מבלי לכתוב foreach, נפלאות codeigniter.
לדעתי עדיף שתעשה וויו אחד של עמוד ההודעות ותעביר לתוכו מערכך של הודעות ובפנים תעשה לולאה שעושה מה שאתה רוצה.
(כרגיל, כמו שספלאש אמר)
הרעיון הוא בשביל לסדר לעצמי הכל בקבצים נפרדים שיהיה לי יותר נוח.
ככה שאני לא אצטרך להתחיל לגלול את הקוד שלי, אלא ישר לפתוח את הקובץ היעודי לפוסטים.
האם זה מאט את האתר? או שאין הבדל בין לכתוב את קוד ה HTML באותו עמוד לבין מה שעשיתי?
בנוגע למה שספלאש אמר, ה foreach נמצא ב view.
מבחינת ביצועים זה לוקח קצת יותר משאבים, לא משהו שתרגיש.
זה כמו include במקום echo ..
במקום:
<div class="post">
<h1><?php echo $post->title; ?></h1>
<p><?php echo $post->body; ?></p>
</div>
<?php endforeach; ?>
אז:
<?php include('views/posts/widget.php'); ?>
<?php endforeach; ?>
התוכן בקובץ views/posts/widget.php:
<h1><?php echo $post->title; ?></h1>
<p><?php echo $post->body; ?></p>
</div>
לא קריטי מבחינת ביצועים..
סבבה הבנתי, תודה לכם!
עוד שאלה, מה הפונקציה שבודקת תוך כמה זמן העמוד עלה? אולי ככה אני אוכל לבדוק פחות או יותר מה ההבדל מבחינת ביצועים.
הלולאה בתוך ה view תעבוד מהר יותר משום שברגע שאתה עושה לולאה מבחוץ הוא כל פעם יפתח את ה view מחדש ויכניס את הנתונים לתוכו,מאוד מיותר.
לגבי זמני ריצה אין לזה פונקציה,הדרך המקובלת היא להשתמש ב time בתחילת הסקריפט ועוד פעם time בסופו אבל מאחר ומדובר במספר פעולות זניח יחסית קשה לי להאמין שתרגיש הבדל על מנת לקבל את הנתונים כמה שיותר מהימנים תתקין xdebug ותשווה זמני ריצה של לפחות 1000 הרצות שונות בכל אחד מהסקריפטים
בנוסף אתה יכול להסתכל על מה שקורה "מאחורי הקלעים".